---
title: Dependencies
summary: Internal libraries, external packages, framework components, API endpoints, and database connections for OnBaseKeywordSync.
status: draft
owner: Documents
last_reviewed: 2026-09-17
---

# Dependencies

OnBaseKeywordSync is a single-project executable with no embedded libraries. It consumes four internal SAIF NuGet packages (one of which is referenced but never imported), two third-party packages, and reaches two remote systems — the Imaging API and the OnBase keyword-update SOAP service. It opens no database connection of any kind.

## Internal dependencies

No project-reference or embedded-library dependencies — single-project repository. `OnBaseKeywordSync/OnBaseKeywordSync.sln` declares exactly one project (`OnBaseKeywordSync.csproj`), with no `<ProjectReference>` elements. The application does consume four internal organizational SAIF NuGet packages, listed below.

| Dependency | Reference Type | Project path | Usage |
| --- | --- | --- | --- |
| `SAIF.Framework.Windows` | NuGet Package | — | Console lifecycle, argument contract, Autofac bootstrap, console logging (`SaifStandardProgramBase`, `ConsoleBase`, `StandardArgumentContainerBase`, `ArgumentResolverBuilder`, `RegisterCommonDependencies`) |
| `SAIF.Framework.Core` | NuGet Package | — | `IEnvironmentService`, `LogService`, `ConfigureOpenTelemetry` |
| `SAIF.Framework.Common` | NuGet Package | — | `IConsoleLogService`, `IsNullOrWhiteSpace`/`GetFullFormattedException` extension methods |
| `SAIF.Web.API.Clients` | NuGet Package | — | `JsonHttpClient`, `ClientInfo` — used to build the Imaging API REST client |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| `Newtonsoft.Json` | 8.0.3 | Transitive serialization support; no direct `using` in repository source |
| `RestSharp` | 106.12.0 | No direct `using` in repository source — transitive of the API client package* |

## Transitive dependencies

Dependencies in this section are inherited from framework packages rather than referenced directly. `SAIF.Web.API.Clients` is not present in the Legends CLI index, so no inherited documentation could be retrieved for `JsonHttpClient`/`ClientInfo`; its behavior in this table is taken from call sites only.**

| Dependency | Source framework | Type | Usage |
| --- | --- | --- | --- |
| `WindowsEnvironmentService` (`IEnvironmentService`) | `SAIF.Framework.Core` | Transitive | Environment API configuration retrieval, resolved and hand-propagated to `ImagingApiClient`, `KeywordUpdater`, `OnBaseKeywordSyncClient` |
| `ConsoleLogService` (`IConsoleLogService`) | `SAIF.Framework.Windows` | Transitive | Console and file logging surface injected into `ConsoleBase`, forwarded to `KeywordUpdater`† |
| `LogService` (`ILogService`) | `SAIF.Framework.Core` | Transitive | Registered by `RegisterAppDependencies` but never resolved by application code |
| `SAIF.Framework.Data.NHibernate` | `SAIF.Framework.Data.NHibernate` | Transitive (unused) | Package reference present in `OnBaseKeywordSync.csproj` but no type from it is imported or used anywhere in source |

## API dependencies

| Endpoint | Method | Called from | Base URL config key | Usage |
| --- | --- | --- | --- | --- |
| `ImageKeywordSyncs?getDocumentCount={bool}` | GET | `ImagingApiClient.GetUnprocessedKeywordSyncs` | `imagingapiurl` | Retrieve unprocessed `ImageKeywordSync` records, ordered by `Id` |
| `ImageKeywordSyncs/ClearInvalidPersonUpdates` | PUT | `ImagingApiClient.ProcessInavlidPersonKeywordSyncs` | `imagingapiurl` | Clear/flag keyword syncs whose `person_id` does not exist; returns the cleared records |
| `ImageKeywordSyncs/MarkProcessed?id={id}` | POST | `ImagingApiClient.MarkKeywordSyncAsProcessed` | `imagingapiurl` | Mark one keyword-sync record processed |
| `ImageKeywordSyncs/MarkSetProcessed?ids={csv}` | POST | `ImagingApiClient.MarkKeywordSyncSetAsProcessed` (defined but never called) | `imagingapiurl` | Bulk mark — dead code |
| `BasicHttpBinding_HylandOutBoundContract` (SOAP `basicHttpBinding`) | `KeywordUpdate` / `KeywordUpdateAsync` | `OnBaseKeywordSyncClient.UpdateKeyword` | `OnBaseKeywordUpdateServiceUrl` | Apply one keyword update to OnBase; the synchronous call returns a document handle, the async call is fire-and-forget |

## Database connections

None. This application declares and resolves no database connection of any kind: `OnBaseKeywordSync/App.config` contains no `<connectionStrings>` element, and `RegisterAppDependencies` calls `builder.RegisterCommonDependencies(Environment.UserName, new[] { typeof(Program).Assembly })` with no `params DatabaseConfig[]` argument, so the framework's unit-of-work and connection registration paths are skipped entirely†. All persistence is performed remotely by the Imaging API behind `{imagingapiurl}v1/Integration`; no connection string reaches this process.

## Dependency risks and notes
- `SAIF.Web.API.Clients` is not present in the Legends CLI index, so its behavior (including whether a non-success HTTP status throws or returns a default) could not be independently verified.**
- `SAIF.Framework.Data.NHibernate` is referenced but never imported or used in source — an unused dependency (also a transitive dependency of `SAIF.Framework.Windows`).
- `imagingapiurl` and `OnBaseKeywordUpdateServiceUrl` have no default anywhere in the repository and are not declared in `environmentsettings/settings.yml`; both must be supplied by shared environment settings or the application cannot reach either integration.
- Async OnBase calls (`KeywordUpdateAsync`) are fire-and-forget — the returned `Task` is never awaited or observed, so faults on that path are silently lost.
- `Newtonsoft.Json` is pinned at 8.0.3 (2016-era) with a binding redirect in `App.config`.

## Related documentation
- [Application index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Run lifecycle](run-lifecycle.md)
- [Arguments](arguments.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `†` are derived from dependency library documentation via the Legends CLI. Statements marked with `*` were inferred from code structure or contextual evidence. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `OnBaseKeywordSync/OnBaseKeywordSync.csproj`
- `OnBaseKeywordSync/OnBaseKeywordSync.sln`
- `OnBaseKeywordSync/Program.cs`
- `OnBaseKeywordSync/App.config`
- `OnBaseKeywordSync/Services/ImagingApiClient.cs`
- `OnBaseKeywordSync/Services/OnBaseKeywordSyncClient.cs`
- `OnBaseKeywordSync/Service References/OnBase/Reference.svcmap`
